home *** CD-ROM | disk | FTP | other *** search
Wrap
(*************************************************** Ant Movie Catalog importation script www.antp.be/software/moviecatalog/ [Infos] Authors=ScorEpioN Title=Update Fields Description=Mise α jour massive de champs / Update fields Site=http://scorepion.le-site.info Language=EN,FR Version=25 du 23/05/2005 Requires=3.5 Comments=Ce script nΘcessite le fichier ScorEpioNCommonScript.pas|.==.| : ' ( ( ( ( /\ | "==()))))): ⌐ ScorEpioN ⌐| ( ( ( ( \_/ License= GetInfo=0 [Options] Mise α jour=1|1|0=Oui|1=Non Casse Choisie=3|3|0=Tout en minuscule|1=Tout en majuscule|2=PremiΦre lettre en majuscule|3=PremiΦre lettre de chaque mot en majuscule ***************************************************) program UpdateAllField; uses ScorEpioNCommonScript; const VersionScript = '25 du 23/05/2005'; NomScript = 'UPDATE FIELDS'; var Update, NewField, NewValue, Field, Abort, FirstExec : String; //------------------------------------------------------------------------------ // FONCTION DEMANDE CONFIRMATION //------------------------------------------------------------------------------ function confirm(leMessage : String): Boolean; begin if (FirstExec <> 'N') then begin if (ShowConfirmation(leMessage) = True) then begin result := True; end else result := False; end else result := True; end; //------------------------------------------------------------------------------ // MET UN CHAMPS A LA CASSE VOULUE //------------------------------------------------------------------------------ function casse(titre : String; option : Integer) : string; begin if (option = 0) then begin titre := AnsiLowerCase(titre); end else if (option = 1) then begin titre := AnsiUpperCase(titre); end else if (option = 2) then begin titre := AnsiUpFirstLetter(titre); end else if (option = 3) then begin titre := AnsiMixedCase(titre,' -'); end; result := titre; end; //------------------------------------------------------------------------------ // FONCTION DE DUPLICATION DE FICHES //------------------------------------------------------------------------------ procedure duplicateFields(); begin if (confirm('Vous allez dupliquer la fiche : '+GetField(fieldTranslatedTitle)+' ('+GetField(fieldOriginalTitle)+'). '+'Avez-vous bien penser α sΘlectionner les fiches cibles ?') = True) then begin if (FirstExec <> 'N') then begin SetStatic('Titretraduit',GetField(fieldTranslatedTitle)); // Titre traduit SetStatic('Titreoriginal', GetField(fieldOriginalTitle)); // Titre original SetStatic('Description', GetField(fieldDescription)); // Description SetStatic('Media', GetField(fieldMedia)); // Media SetStatic('Typedemedia', GetField(fieldMediaType)); // Type de media SetStatic('Source', GetField(fieldSource)); // Source SetStatic('Ladate', GetField(fieldDate)); // Date SetStatic('Lemprunteur', GetField(fieldBorrower)); // Emprunteur SetStatic('Note', GetField(fieldRating)); // Note SetStatic('Directeur', GetField(fieldDirector)); // Directeur SetStatic('Producteur', GetField(fieldProducer)); // Producteur SetStatic('Pays', GetField(fieldCountry)); // Pays SetStatic('Categorie', GetField(fieldCategory)); // Categorie SetStatic('Annee', GetField(fieldYear)); // Annee SetStatic('Duree', GetField(fieldLength)); // Duree SetStatic('Acteurs', GetField(fieldActors)); // Acteurs SetStatic('URL', GetField(fieldURL)); // URL SetStatic('Commentaires', GetField(fieldComments)); // Commentaires SetStatic('Formatvideo', GetField(fieldVideoFormat)); // Format video SetStatic('Formataudio', GetField(fieldAudioBitrate)); // Format audio SetStatic('Bitratevideo', GetField(fieldVideoBitrate)); // Bitrate video SetStatic('Bitrateaudio', GetField(fieldAudioBitrate)); // Bitrate audio SetStatic('Resolution', GetField(fieldResolution)); // Resolution SetStatic('Nbframe', GetField(fieldFrameRate)); // Nbframe SetStatic('Langue', GetField(fieldLanguages)); // Langue SetStatic('Soustitre', GetField(fieldSubtitles)); // Sous-titre SetStatic('Taille', GetField(fieldSize)); // Taille SetStatic('Nbdisque', GetField(fieldDisks)); // Nb de disque end else begin if CanSetField(fieldTranslatedTitle) then SetField(fieldTranslatedTitle, GetStatic('Titretraduit')); if CanSetField(fieldOriginalTitle) then SetField(fieldOriginalTitle, GetStatic('Titreoriginal')); if CanSetField(fieldDescription) then SetField(fieldDescription, GetStatic('Description')); if CanSetField(fieldMedia) then SetField(fieldMedia, GetStatic('Media')); if CanSetField(fieldMediaType) then SetField(fieldMediaType, GetStatic('Typedemedia')); if CanSetField(fieldSource) then SetField(fieldSource, GetStatic('Source')); if CanSetField(fieldDate) then SetField(fieldDate, GetStatic('Ladate')); if CanSetField(fieldBorrower) then SetField(fieldBorrower, GetStatic('Lemprunteur')); if CanSetField(fieldRating) then SetField(fieldRating, GetStatic('Note')); if CanSetField(fieldDirector) then SetField(fieldDirector, GetStatic('Directeur')); if CanSetField(fieldProducer) then SetField(fieldProducer, GetStatic('Producteur')); if CanSetField(fieldCountry) then SetField(fieldCountry, GetStatic('Pays')); if CanSetField(fieldCategory) then SetField(fieldCategory, GetStatic('Categorie')); if CanSetField(fieldYear) then SetField(fieldYear, GetStatic('Annee')); if CanSetField(fieldLength) then SetField(fieldLength, GetStatic('Duree')); if CanSetField(fieldActors) then SetField(fieldActors, GetStatic('Acteurs')); if CanSetField(fieldURL) then SetField(fieldURL, GetStatic('URL')); if CanSetField(fieldComments) then SetField(fieldComments, GetStatic('Commentaires')); if CanSetField(fieldVideoFormat) then SetField(fieldVideoFormat, GetStatic('Formatvideo')); if CanSetField(fieldAudioBitrate) then SetField(fieldAudioBitrate, GetStatic('Formataudio')); if CanSetField(fieldVideoBitrate) then SetField(fieldVideoBitrate, GetStatic('Bitratevideo')); if CanSetField(fieldAudioBitrate) then SetField(fieldAudioBitrate, GetStatic('Bitrateaudio')); if CanSetField(fieldResolution) then SetField(fieldResolution, GetStatic('Resolution')); if CanSetField(fieldFrameRate) then SetField(fieldFrameRate, GetStatic('Nbframe')); if CanSetField(fieldLanguages) then SetField(fieldLanguages, GetStatic('Langue')); if CanSetField(fieldSubtitles) then SetField(fieldSubtitles, GetStatic('Soustitre')); if CanSetField(fieldSize) then SetField(fieldSize, GetStatic('Taille')); if CanSetField(fieldDisks) then SetField(fieldDisks, GetStatic('Nbdisque')); end; end else begin abort := 'O'; end; end; //------------------------------------------------------------------------------ // FONCTION METS LE CHAMPS COMMENTAIRE A LA SUITE DU CHAMPS DESCRIPTION //------------------------------------------------------------------------------ procedure moveComment(); begin if (confirm('Vous allez dΘplacer le contenu du champs ''''Commentaire'''' vers le champs ''''Description''''.') = True) then begin if (CanSetField(fieldDescription) and CanSetField(fieldComments)) then begin moveComments(); end; end else begin abort := 'O'; end; end; //------------------------------------------------------------------------------ // FONCTION MISE A JOUR DE LA CASSE DES TITRES ET DES NOMS //------------------------------------------------------------------------------ procedure UpdateCasse(); begin if (confirm('Vous allez modifier la casse des champs avec des ''''Titres'''', des ''''Noms'''', les ''''Pays'''' et les ''''Genres'''', en fonction des champs modifiables et de l''option choisie.') = True) then begin // Titre Original if (CanSetField(fieldOriginalTitle)) then SetField(fieldOriginalTitle, casse(GetField(fieldOriginalTitle),GetOption('Casse Choisie'))); // Titre Traduit if (CanSetField(fieldTranslatedTitle)) then SetField(fieldTranslatedTitle, casse(GetField(fieldTranslatedTitle),GetOption('Casse Choisie'))); // Nom du RΘalisateur if (CanSetField(fieldDirector)) then SetField(fieldDirector, casse(GetField(fieldDirector),GetOption('Casse Choisie'))); //Nom du Producteur if (CanSetField(fieldProducer)) then SetField(fieldProducer, casse(GetField(fieldProducer),GetOption('Casse Choisie'))); // Nom des Acteurs if (CanSetField(fieldActors)) then SetField(fieldActors, casse(GetField(fieldActors),GetOption('Casse Choisie'))); // CatΘgorie if (CanSetField(fieldCategory)) then SetField(fieldCategory, casse(GetField(fieldCategory),GetOption('Casse Choisie'))); // Pays if (CanSetField(fieldCountry)) then SetField(fieldCountry, casse(GetField(fieldCountry),GetOption('Casse Choisie'))); end else begin abort := 'O'; end; end; //------------------------------------------------------------------------------ // FONCTION COPIE TITRE SI VIDE //------------------------------------------------------------------------------ procedure CopyTitle(); begin if (confirm('Vous allez dupliquer les titres (si vide), avec la casse choisie.') = True) then begin if GetField(fieldTranslatedTitle) = '' then begin if (CanSetField(fieldTranslatedTitle)) then SetField(fieldTranslatedTitle, casse(GetField(fieldOriginalTitle),GetOption('Casse Choisie'))); end else if GetField(fieldOriginalTitle) = '' then begin if (CanSetField(fieldOriginalTitle)) then SetField(fieldOriginalTitle, casse(GetField(fieldTranslatedTitle),GetOption('Casse Choisie'))); end; end else begin abort := 'O'; end; end; //------------------------------------------------------------------------------ // FONCTION SUPPRIME TITRE EN DOUBLE //------------------------------------------------------------------------------ procedure DeleteTitre(Title : Integer); begin if (confirm('Vous allez supprimer le titre en double') = True) then begin DeleteTitle(Title); end else begin abort := 'O'; end; end; //------------------------------------------------------------------------------ // FONCTION QUI AFFICHE LE CHOIX DU TITRE A SUPPRIMER //------------------------------------------------------------------------------ procedure menuTitre(); begin if (FirstExec <> 'N') then begin PickTreeClear; PickTreeAdd('Choisir le champs en double que vous souhaitez supprimer :', ''); PickTreeAdd('Titre Original (Original Title)', IntToStr(fieldOriginalTitle)); PickTreeAdd('Titre Traduit (Translated Title)', IntToStr(fieldTranslatedTitle)); PickTreeExec(Field); end; DeleteTitre(StrToInt(Field,0)); end; //------------------------------------------------------------------------------ // SUPPRIME UN MOT D'UNE CHAINE //------------------------------------------------------------------------------ procedure deleteWord(Champs : Integer); var i,j, fin, finTitle : Integer; title, temp, avant, apres : String; begin if (confirm('Vous allez supprimer un mot d''un champs.') = True) then begin title := ' '+GetField(Champs)+' '; if (NewField = '') then Input('Delete a Word by ScorEpioN', 'Entrez le mot α supprimer :', NewField); i:=pos(NewField,title); if i <> 0 then begin fin := length(NewField); avant := copy(title,i-1,1); apres := copy(title,i+fin,1); if (avant = ' ') and (apres = ' ') then begin finTitle := length(title); title := copy(title,1,i-1)+copy(title,i+fin,finTitle-i-fin+1); title := StringReplace(title, ' ', ' '); end; end; SetField(Champs, Trim(title)); end else begin abort := 'O'; end; end; //------------------------------------------------------------------------------ // REMPLACE UN MOT DANS UN CHAMPS //------------------------------------------------------------------------------ procedure replaceWord(Champs : Integer); begin if (confirm('Vous allez remplacer un mot dans un champs.') = True) then begin if (NewField = '') then Input('Replace a Word by ScorEpioN', 'Entrez le mot α remplacer :', NewField); if (NewValue = '') then Input('Replace a Word by ScorEpioN', 'Entrez le nouveau mot :', NewValue); SetField(Champs, StringReplace(GetField(Champs), NewField, NewValue)); end else begin abort := 'O'; end; end; //------------------------------------------------------------------------------ // REMPLACE LE CONTENU D'UN CHAMPS //------------------------------------------------------------------------------ procedure replaceField(Champs : Integer); begin if (confirm('Vous allez remplacer le contenu d''un champs.') = True) then begin if (NewField = '') then Input('Replace a Field by ScorEpioN', 'Entrez la nouvelle valeur du champs :', NewField); SetField(Champs, NewField); end else begin abort := 'O'; end; end; //------------------------------------------------------------------------------ // EFFACE LE CONTENU D'UN CHAMPS //------------------------------------------------------------------------------ procedure deleteField(Champs : Integer); begin if (confirm('Vous allez effacer le contenu d''un champs.') = True) then begin SetField(Champs, ''); end else begin abort := 'O'; end; end; //------------------------------------------------------------------------------ // COCHE LE FILM SI LE CONTENU DU CHAMPS EST VIDE //------------------------------------------------------------------------------ procedure checkEmptyField(Champs : Integer); begin if (confirm('Vous allez cocher les films ayant le champs choisi vide.') = True) then begin if (GetField(Champs) = '') then SetField(fieldChecked, 'x') else SetField(fieldChecked, ''); end else begin abort := 'O'; end; end; //------------------------------------------------------------------------------ // IMPORTER UNE IMAGE A PARTIR DE SON URL //------------------------------------------------------------------------------ procedure NewImage(); begin if (confirm('Vous allez importer une nouvelle image.') = True) then begin if (NewField = '') then Input('Import Image by URL', 'Entrez l''URL de l''image :', NewField); GetPicture(NewField); end else begin abort := 'O'; end; end; //------------------------------------------------------------------------------ // TRANSFORME LES NATIONALITES EN PAYS //------------------------------------------------------------------------------ procedure transformPays(); begin if (confirm('Vous allez transformer les nationalitΘs du champs Pays, en nom de pays.') = True) then begin if CanSetField(fieldCountry) then SetField(fieldCountry, transformCountry(GetField(fieldCountry))); end else begin abort := 'O'; end; end; //------------------------------------------------------------------------------ // FONCTION QUI AFFICHE LA LISTE DES CHAMPS //------------------------------------------------------------------------------ procedure menuChamps(lAction : String); begin if (FirstExec <> 'N') then begin PickTreeClear; PickTreeAdd('Label du support (Update Media Type Field)', IntToStr(fieldMedia)); PickTreeAdd('Type de support (Update Media Type Field)', IntToStr(fieldMediaType)); PickTreeAdd('Origine (Source)', IntToStr(fieldSource)); PickTreeAdd('Emprunteur (Borrower)',IntToStr(fieldBorrower)); PickTreeAdd('Titre original (Original Title)', IntToStr(fieldOriginalTitle)); PickTreeAdd('Titre Traduit (Translated Title)', IntToStr(fieldTranslatedTitle)); PickTreeAdd('RΘalisateur (Director)',IntToStr(fieldDirector)); PickTreeAdd('Producteur (Producer)',IntToStr(fieldProducer)); PickTreeAdd('Pays (Country)',IntToStr(fieldCountry)); PickTreeAdd('Genre (Category)',IntToStr(fieldCategory)); PickTreeAdd('Acteurs (Actors)',IntToStr(fieldActors)); PickTreeAdd('Adresse Web (URL)',IntToStr(fieldURL)); PickTreeAdd('Description (Description)',IntToStr(fieldDescription)); PickTreeAdd('Commentaire (Comments)',IntToStr(fieldComments)); PickTreeAdd('Langue (Languages)',IntToStr(fieldLanguages)); PickTreeAdd('Sous-Titres (Subtitles)',IntToStr(fieldSubtitles)); PickTreeExec(Field); end; if (lAction = 'checkEmptyField') then begin checkEmptyField(StrToInt(Field,0)); end else if (lAction = 'deleteW') then begin deleteWord(StrToInt(Field,0)); end else if (lAction = 'deleteF') then begin deleteField(StrToInt(Field,0)); end else if (lAction = 'replaceW') then begin replaceWord(StrToInt(Field,0)); end else if (lAction = 'replaceF') then begin replaceField(StrToInt(Field,0)); end; end; //------------------------------------------------------------------------------ // PROCEDURE POUR METTRE LA TAILLE TOTALE DES FICHIERS //------------------------------------------------------------------------------ procedure tailleFichier(); var i, Total: Integer; s: string; begin i := 1; Total := 0; s := GetField(fieldSize); while i <= Length(s) do begin if (StrGet(s, i) >= '0') and (StrGet(s, i) <= '9') then i := i + 1 else begin if i > 1 then Total := Total + StrToInt(Copy(s, 1, i - 1), 0); Delete(s, 1, i); i := 1; end; end; if i > 1 then begin Total := Total + StrToInt(Copy(s, 1, i - 1), 0); SetField(fieldSize, IntToStr(Total)); end; end; //------------------------------------------------------------------------------ // TRADUIT LE CHAMPS DESCRIPTION //------------------------------------------------------------------------------ procedure translateSynopsis(); var Adresse, Parametre, Description, Resultat, Line : String; BeginPos, EndPos : Integer; begin if (confirm('Vous allez traduire le champs ''''Description''''.') = True) then begin if (NewField = '') then begin PickTreeClear; PickTreeAdd('SΘlectionner les langues source et cible :', ''); PickTreeAdd('Du chinois simpl. vers l''anglais', 'zh_en'); PickTreeAdd('Du chinois trad. vers l''anglais', 'zt_en'); PickTreeAdd('De l''anglais vers le chinois simpl.', 'en_zh'); PickTreeAdd('De l''anglais vers le chinois trad.', 'en_zt'); PickTreeAdd('De l''anglais vers le hollandais', 'en_nl'); PickTreeAdd('De l''anglais vers le franτais', 'en_fr'); PickTreeAdd('De l''anglais vers l''allemand', 'en_de'); PickTreeAdd('De l''anglais vers le grec', 'en_el'); PickTreeAdd('De l''anglais vers l''italien', 'en_it'); PickTreeAdd('De l''anglais vers le japonais', 'en_ja'); PickTreeAdd('De l''anglais vers corΘen', 'en_ko'); PickTreeAdd('De l''anglais vers le portugais', 'en_pt'); PickTreeAdd('De l''anglais vers le russe', 'en_ru'); PickTreeAdd('De l''anglais vers l''espagnol', 'en_es'); PickTreeAdd('Du hollandais vers l''anglais', 'nl_en'); PickTreeAdd('Du hollandais vers le franτais', 'nl_fr'); PickTreeAdd('Du franτais vers le hollandais', 'fr_nl'); PickTreeAdd('Du franτais vers l''anglais', 'fr_en'); PickTreeAdd('Du franτais vers l''allemand', 'fr_de'); PickTreeAdd('Du franτais vers le grec', 'fr_el'); PickTreeAdd('Du franτais vers l''italien', 'fr_it'); PickTreeAdd('Du franτais vers le portugais', 'fr_pt'); PickTreeAdd('Du franτais vers l''espagnol', 'fr_es'); PickTreeAdd('De l''allemand vers l''anglais', 'de_en'); PickTreeAdd('De l''allemand vers le franτais', 'de_fr'); PickTreeAdd('Du grec vers l''anglais', 'el_en'); PickTreeAdd('Du grec vers le franτais', 'el_fr'); PickTreeAdd('De l''italien vers l''anglais', 'it_en'); PickTreeAdd('De l''italien vers le franτais', 'it_fr'); PickTreeAdd('Du japonais vers l''anglais', 'ja_en'); PickTreeAdd('Du corΘen vers l''anglais', 'ko_en'); PickTreeAdd('Du portugais vers l''anglais', 'pt_en'); PickTreeAdd('Du portugais vers le franτais', ' pt_fr'); PickTreeAdd('Du russe vers l''anglais', 'ru_en'); PickTreeAdd('De l''espagnol vers l''anglais', 'es_en'); PickTreeAdd('De l''espagnol vers le franτais', 'es_fr'); PickTreeExec(NewField); end; Description := GetField(fieldDescription); Description := StringReplace(Description , #13#10, ' '); Description := UTF8Encode(Description); Adresse := URLEncode('http://babelfish.altavista.com/tr'); Parametre := 'do it =done&intl=1&tt=urltext&trtext='+Description+'&lp='+NewField; Line := PostPage(Adresse,Parametre); BeginPos := Pos('<td bgcolor=white class=s><div style=padding:10px;>', Line); Delete(Line, 1, BeginPos+50); EndPos := Pos('</div></td>', Line); Resultat := Copy(Line, 1, EndPos-1 ); Resultat := StringReplace(Resultat, #13#10, ' '); Resultat := UTF8Decode(Resultat); HTMLDecode(Resultat); HTMLRemoveTags(Resultat); SetField(fieldDescription, Resultat); end else begin abort := 'O'; end; end; //------------------------------------------------------------------------------ // FONCTION QUI AFFICHE LE MENU ET RETOURNE L'ACTION CHOISIE //------------------------------------------------------------------------------ function menu() : String; begin PickTreeClear; PickTreeAdd('Importer une image depuis son url (Import Image by URL)', 'NewImage'); PickTreeAdd('Dupliquer le contenu d''une fiche (Duplicate card)', 'Duplicate'); PickTreeAdd('DΘplacer les commentaires dans la description (Move Comments -> Description)', 'Move'); PickTreeAdd('Changer la casse en fonction de l''option choisie (Change letter format with option)', 'Casse'); PickTreeAdd('Cocher les films si champs vide (Check Empty Field)', 'checkEmptyField'); PickTreeAdd('Supprimer des titres les tags (Remove title tags)', 'Tags'); PickTreeAdd('Copier titre si un titre vide (Copy Title If Empty Title)', 'Copier'); PickTreeAdd('Supprimer titre en double (Delete Double Title)', 'DeleteDouble'); PickTreeAdd('Supprimer le contenu d''un champs (Delete a field)', 'deleteF'); PickTreeAdd('Remplacer le contenu d''un champs (Replace a field)', 'replaceF'); PickTreeAdd('Supprimer un mot dans un champs (Delete a word)', 'deleteW'); PickTreeAdd('Remplacer un mot dans un champs (Replace a word)', 'replaceW'); PickTreeAdd('Transformer NationalitΘ en Pays (Transform Nationality to Country)', 'transformPays'); PickTreeAdd('Format ''Somme'' pour la taille des fichiers (Sum Format to Size Field)', 'tailleFichier'); PickTreeAdd('Traduire la description avec Altavista (Translate Synopsis with Altavista)', 'Translate'); PickTreeExec(Update); result := Update; end; //------------------------------------------------------------------------------ // PROCEDURE POUR EXECUTER LA TACHE CHOISIE //------------------------------------------------------------------------------ procedure executeTask(); begin if (Update = 'NewImage') then begin NewImage(); end else if (Update = 'checkEmptyField') then begin menuChamps('checkEmptyField'); end else if (Update = 'transformPays') then begin transformPays(); end else if (Update = 'Move') then begin moveComment(); end else if (Update = 'Tags') then begin SetField(fieldTranslatedTitle, casse(cleanTitle(GetField(fieldTranslatedTitle)),GetOption('Casse Choisie'))); SetField(fieldOriginalTitle, casse(cleanTitle(GetField(fieldOriginalTitle)),GetOption('Casse Choisie'))); end else if (Update = 'Casse') then begin UpdateCasse(); end else if (Update = 'tailleFichier') then begin tailleFichier(); end else if (Update = 'DeleteDouble') then begin menuTitre(); end else if (Update = 'Copier') then begin CopyTitle(); end else if (Update = 'deleteW') then begin menuChamps('deleteW'); end else if (Update = 'deleteF') then begin menuChamps('deleteF'); end else if (Update = 'replaceW') then begin menuChamps('replaceW'); end else if (Update = 'replaceF') then begin menuChamps('replaceF'); end else if (Update = 'Translate') then begin translateSynopsis(); end else if (Update = 'Duplicate') then begin duplicateFields(); end; end; //------------------------------------------------------------------------------ // PROGRAMME PRINCIPAL //------------------------------------------------------------------------------ begin if CheckVersion(3,5,0) then begin if GetOption('Mise α jour') = 0 then begin execMenuMAJ(VersionScript,NomScript); exit; end; if (Abort <> 'O') then begin if (Update = '') then Update := menu(); executeTask(); FirstExec := 'N'; end else begin exit; end; end else ShowMessage('Ce script requiert une version plus rΘcente de Ant Movie Catalog (au moins la version 3.5.0)'); exit; end.